package com.df.excel_export.validator;

import com.df.excel_export.common.ExcelTable;

import java.util.List;

public interface IFieldValidator {

    /**
     * 获取校验器名称
     * @return
     */
    String getName();


    /**
     * 此校验器依赖其他表或枚举，此方法获取依赖，枚举名个数为 @枚举名
     *     //此校验器所依赖的表名和枚举名，枚举名前固定@符号
     * @return
     */
    List<String> getDepends();

    /**
     * 校验数据是否符合规则
     * @param checkTable 当前检查的表格
     * @param rowData 当前检查的行数据
     * @param dataRowIndex 当前检查的行索引
     * @param fieldIndex 此单元格内容列索引
     * @param fieldName 此单元格对应字段的名字
     * @param fieldTypeStr 此单元格内容对应tag下的类型字符串
     * @param filedValue  此单元隔的实际数据，是根据tag下的类型解析后的数据，枚举除外，枚举就是单元格的实际内容，一般为字符串
     * @return
     */
    boolean  validate(ExcelTable checkTable, List<Object> rowData, Integer dataRowIndex, Integer fieldIndex, String fieldName, String fieldTypeStr, Object filedValue);
}
